//https://leetcode.cn/problems/4sum-ii/
package codeRandomThoughts.Test454四数相加II;

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        //首先求nums1和nums2的所有组成情况
        Map<Integer, Integer> nums12 = new HashMap<>();
        Integer tem = 0;
        int sum = 0;
        for (int i = 0; i < nums1.length; i++) {
            for (int j = 0; j < nums2.length; j++) {
                tem = nums1[i] + nums2[j];
                nums12.put(tem, nums12.getOrDefault(tem, 0) + 1);
            }
        }

        //求nums3和nums4所有组成情况,判断其相反数是否在nums12中
        for (int i = 0; i < nums3.length; i++) {
            for (int j = 0; j < nums4.length; j++) {
                tem = -(nums3[i] + nums4[j]);
                if (nums12.containsKey(tem)) {
                    //如果相反数在nums12中
                    sum += nums12.get(tem);
                }
            }
        }
        return sum;
    }
}
